#ifndef __MY_DRIVER_H__
#define __MY_DRIVER_H__

#define DRVNAME     L"\\Device\\MyDriver"
#define DOSDRVNAME  L"\\DosDevices\\MyDriverTest"

DRIVER_INITIALIZE DriverEntry;

__drv_dispatchType(IRP_MJ_CREATE)
DRIVER_DISPATCH CreateMyDriver;

__drv_dispatchType(IRP_MJ_CLOSE)
DRIVER_DISPATCH CloseMyDriver;

__drv_dispatchType(IRP_MJ_WRITE)
DRIVER_DISPATCH WriteMyDriver;

__drv_dispatchType(IRP_MJ_READ)
DRIVER_DISPATCH ReadMyDriver;

DRIVER_UNLOAD UnloadMyDriver;

typedef struct _DEVICE_EXTENSION
{
	PVOID memory_buffer;
	SIZE_T buffer_length;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
#pragma alloc_text(PAGE, UnloadMyDriver)
#pragma alloc_text(PAGE, CreateMyDriver)
#pragma alloc_text(PAGE, CloseMyDriver)
#pragma alloc_text(PAGE, WriteMyDriver)
#pragma alloc_text(PAGE, ReadMyDriver)
#endif /* ALLOC_PRAGMA */

#endif /* __MY_DRIVER_H__ */